function http({ url, method = 'get', data = {} as any, headers = {} as any }) {
  //url 不能为空，如果为空直接return
  if (!url) {
    return
  }

  //1、封装 token
  headers.Authorization = 'Bearer' + localStorage.getItem('token')

  //2、判断method 为get 还是post请求

  if (method.toLocaleUpperCase() === 'GET') {
    //做get 请求的封装    fetch得到一个promise对象，将它return出去
    return fetch(url + '?' + toStr(data), {
      method,
      headers
    }).then((res) => {
      return res.json()
    })
  } else if (method.toLocaleUpperCase() === 'POST') {
    //做post 请求的封装
    headers['Content-Type'] = 'application/json'
    return fetch(url, {
      method,
      body: JSON.stringify(data),
      headers
    }).then((res) => {
      return res.json()
    })
  }
}

//3、专门用于将 json 对象转为 a=1&b=2 格式的函数
function toStr(json) {
  let str = ''

  for (const key in json) {
    str += `${key}=${json[key]}&`
  }
  //newStr 最后末尾会多一个&  把它截取掉
  return str.slice(0, str.length - 1)
}

export default http
